package com.portal.file.service;

import io.minio.ComposeSource;
import io.minio.messages.DeleteObject;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.List;
import java.util.Set;

/**
 * 文件上传接口
 *
 * @author portal
 */
public interface MinioService {
    public boolean createBucket(String bucketName);

    Boolean removeFiles(String bucketName, List<DeleteObject> delObjects);
    /**
     * 获取文件流
     *
     * @param bucketName 桶名称
     */
    public InputStream getFileStream(String bucketName, String objectName);
    /**
     * 获取桶中的文件对象
     *
     * @param bucketName       桶名称
     * @param prefixObjectName 前缀对象名称
     */
    public Set<String> getFileObjects(String bucketName, String prefixObjectName);

    Boolean composeFile(String bucketName, String fileName, List<ComposeSource> sourceObjectList);

    /**
     * 文件上传/文件分块上传
     *
     * @param sliceBucket 桶名称
     * @param objectName 对象名称
     * @param sliceIndex 分片索引
     * @param file       文件
     */
    Boolean uploadFile(String sliceBucket, String objectName, Integer sliceIndex, MultipartFile file);
}
